package com.qdxwx.data.mapper.statistic;

import com.qdxwx.models.statistic.Statistic;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDate;
import java.util.List;


/**
 * Statistic接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
@Repository
public interface StatisticMapper {

	/**
	 * 添加Statistic
	 *
	 * @param date
	 * @return
	 */
	int insert(LocalDate date);
	/**
	 * 按年查询网站统计
	 *
	 * @param year
	 * @return
	 */
	List<Statistic> sumMonthsByYear(@Param("e") int year);
	/**
	 * 收入
	 */
	int sumIncome(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

	/**
	 * 按月查询网站统计
	 *
	 * @param year
	 * @param month
	 * @return
	 */
	List<Statistic> selectListByMonth(@Param("nowYear") int year, @Param("nowMonth") int month);

	/**
	 * 网站统计 （总记录）
	 *
	 * @return
	 * @throws Exception
	 */
	Statistic sumTotal();

	/**
	 * 查询指定时间段的统计数据
	 *
	 * @param startDate
	 * @param endDate
	 */
	List<Statistic> selectListByDate(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

	/**
	 * 删除指定时间段的统计数据
	 *
	 * @param startDate
	 * @param endDate
	 */
	int deleteByDate(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

	/**
	 * 查询最近30条的统计数据
	 *
	 * @param days
	 */
	List<Statistic> selectListByDays(int days);

	/**
	 * 删除指定日期统计
	 *
	 * @param date
	 */
	int delete(LocalDate date);

	/**
	 * 获取日期的登录人数
	 *
	 * @param date
	 * @return
	 */
	int countLoginNum(LocalDate date);

	/**
	 * 获取日期的注册人数
	 *
	 * @param date
	 * @return
	 */
	int countRegisterNum(LocalDate date);


	/**
	 * 网校课程数
	 */
	int countCourseNum();

	/**
	 * 网校总用户数
	 */
	int countUserNum();

	int countOrderNum(LocalDate date);

	int countOrderSuccessNum(LocalDate date);

	int countOrderInitNum(LocalDate date);

	int countOrderClosedNum(LocalDate date);
}